iT邦幫忙

2022 iThome 鐵人賽

DAY 7
0

前言

昨天我們針對path()的使用講解了一下,今天繼續針對其中的應用做探討。

Function views

在我們剛創建project時,打開urls.py可以看到下面就有提到Function views和Class-based views兩種,那為什麼會有兩種Views呢?

"""Django_project URL Configuration

Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')

"""

Function views 顧名思義就是基於Fuction(函式)所撰寫的view,像我們前幾天所寫的hello,一個Django project可以用很多個function來組成我們要的view,但是隨著專案越來越大,可以想像若一個views裡面有100個函式,那維護和擴充就會比較麻煩。因此就能將Function views封裝成Class-based views來增加重用性和可維護性。
我們前期會先以Function views 為主,Class-based views等之後才會再談。

Function Views的使用

我們透過建置頁面來練習Function Views的使用。

首頁

首先,延續我們前幾天寫的project,我們先利用Function View來設置我們的首頁。
我們先在Django_project,創建一個屬於Django_project的views.py。

https://ithelp.ithome.com.tw/upload/images/20220914/20150927IqWwLqUacG.png

並在views.py內打上以下程式碼。

views.py

#Django_app/views.py
from django.shortcuts import render
from django.http import HttpResponse

def Home(request):
    return HttpResponse("This is Homepage!")

接著我們再回到Django_project內的urls.py,增加一行path,並將route設為空字串,這樣他就會一進到網址內就會是首頁! 如果Route是空值的話就會是網址本身唷!

urls.py

#Django_app/urls.py
from django.contrib import admin
from django.urls import path, include
from . import views 
urlpatterns = [
    path('admin/', admin.site.urls),
    path('hello/', include('Django_app.urls')),
    path('', views.Home)
]

聰明的你應該知道為什麼要再創建一個views,因為要避免和不同的app混淆造成太多層的問題,所以我會把主要的頁面建立在Django_project內的views。

https://ithelp.ithome.com.tw/upload/images/20220914/20150927oAR9L4c3qA.png

頁面的建置

建置完首頁後,我們接著建置門市資訊以及關於我們的頁面。
我們回到APP的資料夾,在views.py內建立兩個函式。

views.py

#Django_app/views.py
from django.shortcuts import render
from django.http import HttpResponse

def hello(request,x,y):
    return HttpResponse(f"Hello Django+{x}+{y}")

def aboutus(request):
    return HttpResponse("關於我們")

def storeinfo(request):
    return HttpResponse("門市資訊")

關於我們 呈現畫面

https://ithelp.ithome.com.tw/upload/images/20220914/20150927YVXMHSCQrW.png

門市資訊 呈現畫面

https://ithelp.ithome.com.tw/upload/images/20220914/20150927KE7pt06U2d.png

這樣我們就完成建置了頁面和他們的path。
今天的內容就先到這裡!我們明天繼續探討Views可以如何做使用,大家明天見!

參考資料&推薦閱讀

https://docs.djangoproject.com/en/4.1/intro/tutorial03/#writing-more-views


上一篇
Day6 -URLS and Views -path()到底在做什麼
下一篇
Day-8 -Urls and Views -path 也能傳遞變數? - Dynamic path
系列文
從0 到 50 初探 如何使用Django 架構出一個網站30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言